Linux shell 获得用户输入(read命令) 您所在的位置:网站首页 python 执行linux命令后怎样输入密码 Linux shell 获得用户输入(read命令)

Linux shell 获得用户输入(read命令)

2024-06-17 20:20| 来源: 网络整理| 查看: 265

前言

如果你想在脚本运行时问个问题,并在等待运行脚本的人来回答。bash shell为此提供了read命令。

read的基本读取

read命令的从标准的输入或另一个文件描述符中接受输入。在收到输入后,read命令会将数据放进一个变量。下面是read命令的最简单方法。

#!/bin/bash #测试read命令 echo -n "Enter your name: " read name echo "Hello $name,welcome to my program"

输出结果 在这里插入图片描述 从上面的例子中可以看到 echo命令使用了 -n选项。该选项不会在字符串末尾输出换行符,允许脚本用户紧跟其后输入数据,而不是下一行。

实际上,read命令包含了-p选项,允许你直接在read命令行指定提示符。

#! /bin/bash read -p "Please enter your age: " age days=$[ $age * 365 ] echo "That makes you over $days days old"

输出结果 在这里插入图片描述 上面的例子中,read命令中指定了变量,如果不想指定变量。read命令会将它收到的任何数据都放进特殊环境变量REPLY中。下面的例子举例环境变量REPLY。

#!/bin/bash #测试 REPLY 环境变量 read -p "Enter your name: " echo echo "Hello $REPLY, welcome to my program"

输出结果: 在这里插入图片描述

REPLY环境变量会保存输入的所有的数据,可以在shell脚本中像其他变量一样使用。

read -t 计时器

在使用read命令是要当心,脚本很可能会一直苦等着在脚本用户输入。如果不管是否有数据输入,脚本都会继续执行,这时候你可以使用 -t选项来指定一个计时器。-t选项指定了read命令等待输入的秒数。当计时器过期后,read命令会返回一个非零退出状态码。

#! /bin/bash #数据输入定时 if read -t 5 -p "Please enter your name: " name then echo "Hello $name,welcome to my script" else echo echo "Sorry, too slow" fi

输出结果:

在这里插入图片描述 如果在5秒过后没有输入,会有如下提示:

在这里插入图片描述

如果计时器过期,read命令会以非零退出状态码退出,可以使用如 if-then语句或while循环这种标准的结构化语句来清理所发生的具体情况。

下面例子中,计时器过期时。if语句不成立,shell会执行else部分的命令。 通过read命令来统计输入的字符数。当输入的字符达到预期设的字符数时,就自动退出,将输入的数据赋给变量。

#!/bin/bash read -n1 -p "Do you want to continue [Y/N]" answer case $answer in Y | y) echo echo "fine ,continue on..." ;; N | n) echo echo OK ,goodbye exit ;; esac echo "This is the end of the scrpt"

输出结果: 在这里插入图片描述否定回答: 在这里插入图片描述

本例子中将-n选项和值1一起使用,告诉read命令在接受单个字符后退出。只要按下单个字符回答后,read命令就会接受输入并将它变量,无需按回车键。

隐藏方式读取

有时候你需要从脚本用户中得到输入,但又在屏幕上显示输入的信息。其中典型的例子就是输入的密码,但除此之外,还有很多需要隐藏的数据类型。-s选项可以避免在read命令中输入的数据出现在显示屏上。

#!/bin/bash #从监视器隐藏输入数据 read -s -p "Enter your password: " pass echo echo "Is your password really $pass?"

输出结果: 在这里插入图片描述 输入提示符输入的数据不会出现在屏幕上,但会赋给变量,以便在脚本中使用。

总结

从脚本用户获得数据的一种交互式方法是read命令。read命令支持脚本向用户提问并等待。read命令会将脚本用户输入的数据赋给一个或多个变量。

在这里插入图片描述

扫二维码关注微信公众号,获取技术干货

参考 : Linux命令行与shell脚本编程大全



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有